import re
from time import sleep

from config import Num


def customer_line(page):
    """客户线路费用管理操作"""
    print("开始执行线路费用管理操作...")

    # 点击客户管理中心
    page.locator("div").filter(has_text=re.compile(r"^客户管理中心$")).click()
    print("点击了客户管理中心")
    sleep(1)

    # 点击线路费用管理
    print("找到了线路费用管理菜单")
    page.get_by_role("link", name="线路费用管理").click()
    print("点击了线路费用管理")

    # 等待页面加载
    page.wait_for_timeout(2000)
    print(f"搜索对应结算单位数据")
    page.get_by_role("textbox", name="请选择").first.click()
    page.get_by_role("textbox", name="请选择").first.fill("奇瑞汽车芜湖主机厂")
    page.locator("li").filter(has_text="奇瑞汽车芜湖主机厂").click()
    page.get_by_role("button", name=" 搜索").click()
    page.wait_for_timeout(1000)

    # 执行N次相同的操作
    for i in range(Num):
        print("进入费目管理")
        page.locator(
            ".el-table__fixed-body-wrapper > .el-table__body > tbody > tr > .el-table_1_column_19 > .cell > .fixed-width > button").first.click()
        page.wait_for_timeout(1000)
        print("删除费目")
        # 先验证是否有可删除数据
        delete_button = page.get_by_label("费用管理").get_by_role("button", name="")
        if delete_button.is_visible():
            delete_button.click()
            page.wait_for_timeout(1000)
            page.get_by_role("button", name="确定").click()
            page.get_by_role("button", name="关闭").click()
            page.wait_for_timeout(1000)
            page.get_by_role("button", name=" 搜索").click()
            print("删除线路数据")
            page.locator(
                ".el-table__fixed-body-wrapper > .el-table__body > tbody > tr > .el-table_1_column_19 > .cell > .fixed-width > button:nth-child(4)").first.click()
            page.get_by_role("button", name="确定").click()
            page.wait_for_timeout(1000)
        else:
            page.get_by_role("button", name="关闭").click()
            page.get_by_role("button", name=" 搜索").click()
            page.locator(
                ".el-table__fixed-body-wrapper > .el-table__body > tbody > tr > .el-table_1_column_19 > .cell > .fixed-width > button:nth-child(4)").first.click()
            page.get_by_role("button", name="确定").click()
            page.wait_for_timeout(1000)

    print("所有操作完成")


def add_data(page):
    pass


def new_otdLineDelete(page):
    """otd线路删除操作"""
    print(f'开始执行线路费用管理')

    # 定义隐式等待超时时间
    page.set_default_timeout(30000)

    # 进入目标页面
    page.locator("div").filter(has_text=re.compile(r"^客户管理中心$")).click()
    print(f"点击进入客户管理中心")
    page.get_by_role("link", name="线路费用管理").click()
    print(f"点击进入线路费用管理")
    page.get_by_role("tab", name="OTD线路").click()
    print(f"切换tab为OTD线路")
    print(f"准备搜索对应数据")
    page.get_by_placeholder("请选择").first.click()
    # page.wait_for_timeout(1000)
    page.get_by_placeholder("请选择").first.fill("奇瑞汽车芜湖主机厂")
    # page.wait_for_timeout(500)
    page.locator("li").filter(has_text="奇瑞汽车芜湖主机厂").locator("span").click()
    page.get_by_role("button", name=" 搜索").click()
    print(f"已搜索到对应数据")
    # page.wait_for_timeout(2000)

    # 执行N次相同的操作
    for i in range(Num):
        print(f"开始第 {i + 1} 次操作")
        print("进入费目管理")
        page.get_by_role("button", name="").first.click()
        print("检查并删除费目")

        # 等待费目管理界面加载完成
        page.wait_for_timeout(1500)

        # 使用更稳定的选择器来定位删除按钮
        delete_buttons = page.get_by_label("费用管理").get_by_role("button", name="").all()

        if delete_buttons:
            print(f"找到 {len(delete_buttons)} 条需要删除的费目数据")

            # 从后往前删除，避免索引变化导致的问题
            for j in range(len(delete_buttons) - 1, -1, -1):
                print(f"正在删除第 {len(delete_buttons) - j}/{len(delete_buttons)} 条费目数据")

                # 重新获取当前可用的删除按钮（因为DOM会变化）
                current_delete_buttons = page.get_by_label("费用管理").get_by_role("button", name="").all()
                if j < len(current_delete_buttons):
                    current_delete_buttons[j].click()
                    page.wait_for_timeout(800)
                    page.get_by_role("button", name="确定").click()
                    page.wait_for_timeout(800)

                else:
                    print(f"索引 {j} 超出当前删除按钮范围")

            print("所有费目数据删除完成")

        # 关闭费目管理窗口
        close_button = page.get_by_role("button", name="关闭")
        if close_button.is_visible():
            close_button.click()
            page.wait_for_timeout(1000)

        # 重新搜索确保数据最新
        page.get_by_role("button", name=" 搜索").click()
        # 确认删除按钮是否刷新
        main_delete_button = page.get_by_role("button", name="")
        if main_delete_button:
            page.get_by_role("button", name="").first.click()
            page.get_by_role("button", name="确定").click()

            print("删除线路数据")
        # 删除主线路数据
        else:
            page.wait_for_timeout(1500)
            print(f"等待1.5秒后再次刷新列表")
            page.get_by_role("button", name=" 搜索").click()
            page.get_by_role("button", name="").first.click()
            page.get_by_role("button", name="确定").click()

    print("所有操作完成")
